package com.output;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import java.util.Scanner;

import com.generator.Question;

public class OutputHandler {
    private Scanner scanner;  // 不再自己创建，由外部传入

    // 新增构造方法：接收外部的Scanner实例
    public OutputHandler(Scanner scanner) {
        this.scanner = scanner;
    }

    public int selectColumnCount() {
        int columnCount = 0;
        while (columnCount <= 0) {
            System.out.print("\n请输入每行展示题目数量（≥1）：");
            columnCount = scanner.nextInt();
            if (columnCount <= 0) {
                System.out.println("输入错误！列数需≥1");
            }
        }
        // 移除 scanner.close(); 这一行，避免关闭输入流
        return columnCount;
    }

    public void printQuestionsToConsole(List<Question> questions, int columnCount) {
        System.out.println("\n===== 生成的题目 =====");
        for (int i = 0; i < questions.size(); i++) {
            Question q = questions.get(i);
            // 格式化输出：占15个字符位（左对齐），确保列对齐
            System.out.printf("%-15s", q.getQuestionStr());
            // 每columnCount个题目换行
            if ((i + 1) % columnCount == 0) {
                System.out.println();
            }
        }
        // 若最后一行不足columnCount个，补换行
        if (questions.size() % columnCount != 0) {
            System.out.println();
        }
    }


    public void saveQuestionsToCSV(List<Question> questions, String fileName) {
        // CSV文件路径：项目根目录（Eclipse中项目根目录即SoftwareConstructionLab2目录）
        String filePath = System.getProperty("user.dir") + File.separator + fileName;
        // 使用try-with-resources自动关闭BufferedWriter，避免资源泄漏
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
            // 1. 写入CSV表头（题目,答案）
            writer.write("题目,答案");
            writer.newLine(); // 换行（自动适配系统：Windows\r\n，Linux\n）
            // 2. 写入每道题的信息
            for (Question q : questions) {
                // CSV格式：字符串无需加引号（题目中无逗号，避免冲突）
                writer.write(q.getQuestionStr() + "," + q.getAnswer());
                writer.newLine();
            }
            System.out.println("\nCSV文件已保存至：" + filePath);
        } catch (IOException e) {
            System.err.println("CSV文件保存失败：" + e.getMessage());
        }
    }
}


